This project focuses on developing a complete software stack for autonomous racing. The primary goal was to enable a vehicle to drive a set path and a cone slalom course at similar speeds to a human driver. Key objectives included improving acceleration through launch control, enhancing high-speed vehicle control using advanced techniques like trail braking, and generating an optimal racing line in real-time based on sensor data.
Approaches
Our system is designed as a modular pipeline that processes sensor data to produce vehicle commands. The core components are Sensing, Racing Planner, Velocity Optimization, and Control.
Sensing and Perception
The system's perception module is responsible for detecting cones on the track. It identifies the location, orientation (e.g., standing, left, right), and ID of each cone. This environmental data serves as the primary input for the motion planner.
Racing Planner
The Racing Planner generates a dynamically feasible trajectory based on the detected cones.
The process involves several steps:
- Step 1: Identify the next two closest cones to plan a path segment.
- Step 2: Generate temporary waypoints based on the cone's orientation.

Figure 1. Logic of waypoint generation
- Step 3: Solve a discrete-time optimization problem to generate a
smooth and fast trajectory. The cost function minimizes curvature, steering effort, and
speed variance while aiming for the goal state.

Figure 2. Logic of trajectory optimization
- Step 4: Re-plan the trajectory as new cones are detected to react to
the course in real-time.
Velocity Optimization and Control
To drive the planned path quickly, we first generate an optimal velocity profile. This profile is calculated based on the vehicle's physical limits, which were determined by analyzing data from aggressive manual driving to create a G-G Diagram.

Figure 3. Vehicle limitation constraints
This optimized path and velocity profile is then passed to a modified Stanley controller for precise path tracking. The controller was enhanced with racing modifications and a PID controller for speed, which significantly improved performance and reduced cross-track error compared to a standard implementation.
Launch Control
A dedicated launch control system was developed to maximize acceleration from a complete stop. This system overrides the standard controls at takeoff to optimize the vehicle's launch, providing a measurable performance gain in acceleration tests.
Results
The system was tested extensively, both as individual modules and as a fully integrated stack. The results demonstrate significant performance improvements from our implemented strategies.
Launch Control Performance
The launch control system provided a clear advantage in acceleration. In a 50-meter dash, the vehicle's time improved from 10.3 seconds without launch control to 9.1 seconds with it enabled.
Full System Performance vs. Human Driver
We compared our final system against a human driver on two different courses.
- Set Course: On a closed circuit, the Stanley + Racing
controller completed a lap in 33 seconds, which was a significant
improvement over the Pure Stanley controller's 55-second lap time. However, the
human driver was still a little faster at 30 seconds.
- Slalom Course: In the slalom test with 20m cone spacing, the
automated system took 28 seconds, while the human driver completed it in
20 seconds. The performance gap was largely due to a slow automated
steering rate at sharp turns.
Demo Video
Watch a full demonstration of the system:
This project highlighted several key challenges in autonomous racing. Integrating different
complex modules like perception, planning, and control proved difficult. We also found that
there was a significant mismatch between simulation and real-world vehicle behavior, which
made parameter tuning challenging. Overcoming the vehicle's physical limitations, such as a
slow steering rate, is crucial for achieving competitive performance.